package stc.skymobi.netty.handler.codec.access.protocol;

import stc.skymobi.bean.esb.annotation.EsbField;

/**
 * <pre>
 * 含有序列号的Access头
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * //             seqNum(2)          |            ack(2)             |
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * //|            msgCode(2)         |            result(2)          |
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * //|                             accessIndex(4)                    |
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * //|                          authCode(4)                          |
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * //|                          ownIPAddr(4)                         |
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * //|                          ownPort(2)                           |
 * //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 * </pre>
 */
public class AccessHeaderWithSeqNum extends AccessFixedHeader {
    /** 含有序列号的access包头长度 */
    public static final int WITH_SEQ_NUM_HEADER_SIZE = 14;

    @EsbField(index = 5, bytes = 2)
    private int seqNum = 0;

    @EsbField(index = 6)
    private short ack = 0;

    public int getSeqNum() {
        return seqNum;
    }

    public void setSeqNum(int seqNum) {
        this.seqNum = seqNum;
    }

    public short getAck() {
        return ack;
    }

    public void setAck(short ack) {
        this.ack = ack;
    }

    public String toString() {
        return "AccessFixedHeader{" +
                "srcESBAddr=0x" + Integer.toHexString(getSrcESBAddr()).toUpperCase() +
                ", dstESBAddr=0x" + Integer.toHexString(getDstESBAddr()).toUpperCase() +
                ", length=" + getLength() +
                ", flags=" + getFlags() +
                ", seqNum=" + seqNum +
                ", ack=" + ack +
                '}';
    }
}
